<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <script type="module">

        // function idMaker() {
        //     let index = 0;

        //     return {
        //         next: function () {
        //             return {
        //                 value: new Promise(function (resolve, reject) {
        //                     setTimeout(() => {
        //                         resolve({ value: index++, done: false });
        //                     }, 1000);
        //                 }), done: false
        //             };
        //         }
        //     };
        // }

        // let idmaker = idMaker();
        // console.log(idmaker.next().value);
        // console.log(idmaker.next().value);
        // console.log(idmaker.next().value);

        // async function idMaker() {
        //     let index = 0;
        //     // return new Promise(function (resolve, reject) {
        //     //     setTimeout(() => {
        //     //         resolve({ value: ++index, done: false });
        //     //     }, 2000);
        //     // });
        //     let a= await new Promise(function (resolve, reject) {
        //         setTimeout(() => {
        //             resolve({ value: ++index, done: false });
        //         }, 5000);
        //     });
        //     console.log("a1");
        //     console.log(a);
        //     console.log("a2");
        //     return a.value;

        // }

        // let idmaker = idMaker();

        // console.log(idmaker);

        // idmaker.then(function (data) {
        //     console.log("a3");
        //     console.log(idmaker);
        //     console.log(data.value);
        // });

        // 异步遍历器
        // 异步遍历器的最大的语法特点，就是调用遍历器的next方法，返回的是一个 Promise 对象。

        // const asyncIterable = createAsyncIterable(['a', 'b']);
        // const asyncIterator = asyncIterable[Symbol.asyncIterator]();

        // asyncIterator
        //     .next()
        //     .then(iterResult1 => {
        //         console.log(iterResult1); // { value: 'a', done: false }
        //         return asyncIterator.next();
        //     })
        //     .then(iterResult2 => {
        //         console.log(iterResult2); // { value: 'b', done: false }
        //         return asyncIterator.next();
        //     })
        //     .then(iterResult3 => {
        //         console.log(iterResult3); // { value: undefined, done: true }
        //     });


        // function idMake() {
        //     let index = 0;

        //     return {
        //         next: function () {
        //             return {
        //                 value: new Promise((resove, reject) => {
        //                     index++;
        //                     resove(index);
        //                 }),

        //                 done: false
        //             };
        //         }
        //     }
        // }

        // let idmake = idMake();
        // idmake.next().value.then(result => {
        //     console.log("a" + "--" + result);
        // });
        // idmake.next().value.then(result => {
        //     console.log("b" + "--" + result);
        // });
        // idmake.next().value.then(result => {
        //     console.log("c" + "--" + result);
        // });
       

    </script>
</head>

<body>

</body>

</html>